package models.proxies {
  import com.axon.dataservices.AxDS;
  import com.axon.mvc.helpers.AxVerbs;
  import com.axon.mvc.patterns.proxy.AxProxy;

  import models.vo.DocumentoApresentado;
  import models.vo.Pleito;

  import mx.collections.Sort;
  import mx.collections.SortField;

  public class DocumentoApresentadoProxy extends AxProxy {
    //////////////////////////////////////////////////////////////////////////////////////////////////////

    private var pleito:Pleito;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function list(pleito:Pleito):void {
      this.pleito = pleito;
      AxDS.reload(DocumentoApresentado, onListSuccess, onListFailure, [pleito], null, false);
    }

    private function onListSuccess(result:Array):void {
      pleito.getDocumentosApresentados().removeAll();

      for (var i:Number = 0; i < result.length; i++)
        pleito.getDocumentosApresentados().addItem(DocumentoApresentado(result[i]));

      var sort:Sort = new Sort();
      sort.fields = [new SortField('ordem', true)];
      pleito.getDocumentosApresentados().sort = sort;
      pleito.getDocumentosApresentados().refresh();

      reportSuccess(AxVerbs.LIST, pleito);
    }

    private function onListFailure(result:Object):void {
      reportFailure(AxVerbs.LIST);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function save(docto:DocumentoApresentado):void {
//      		docto.update( onSaveSuccess, onSaveFailure );

//			AxDS.update( docto, onSaveSuccess, onSaveFailure );

//			AxDS.httpInvoke(onSaveSuccess,onSaveFailure,
//    			"documentos_apresentados/" + docto.id + "/update", 
//    			{ entregue : docto.entregue, emissao : docto.emissao, validade : docto.validade, observacao : docto.observacao }, 
//    			AxDS.PUT, true);

      AxDS.httpInvoke(onSaveSuccess, onSaveFailure,
        "documentos_apresentados/" + docto.id,
        {entregue: docto.entregue, emissao: docto.emissao, validade: docto.validade, observacao: docto.observacao},
        AxDS.PUT, true);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    private function onSaveSuccess(result:DocumentoApresentado):void {
      reportSuccess(AxVerbs.SAVE, result);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    private function onSaveFailure(result:Object):void {
      reportFailure(AxVerbs.SAVE);
    }

  }
}